#pragma once

// 静态顺序表
// 给定数组长度，若不够，会导致后续的数据保存失败
// 给多了，会造成空间浪费
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "Contact.h"

#define N 100

typedef Info SLDataType;

// typedef int SLDataType;
//struct SeqList
//{
//	SLDataType a[N];
//	SLDataType size;
//};


// 动态顺序表
typedef struct SeqList
{
	SLDataType* arr; // 存储数据的底层结构
	int capacity; // 记录顺序表的空间大小
	int size; // 记录顺序当前有效的数字个数
}SL;

// 初始化和销毁
void SLInit(SL* ps);
void SLDestroy(SL* ps);
void SLPrint(SL* ps);

// 尾插和头插
void SLPushBack(SL* ps, SLDataType x);
void SLPushFront(SL* PS, SLDataType x);

// 顺序表的头部/尾部删除
void SLPopBack(SL* ps);
void SLPopFront(SL* ps);

// 指定位置之前插入数据
// 删除指定位置数据
void SLInsert(SL* ps, int pos, SLDataType x);
void SLErase(SL* ps, int pos);

// 查找
int SLFind(SL* ps, SLDataType x);
